/****************************************************************************
 * FCE Ultra
 * Nintendo Wii/Gamecube Port
 *
 * Tantric September 2008
 *
 * fceugx.h
 *
 * This file controls overall program flow. Most things start and end here!
 ****************************************************************************/

#ifndef _FCEUGX_H_
#define _FCEUGX_H_


#include "fceux/driver.h"

#define MAXPATHLEN 1024

extern char romFilename[];
extern bool loadingFile;


#define APPNAME                 "FCE Ultra GX"
#define APPVERSION              "3.2.3"
#define APPFOLDER               "fceugx"
#define PREF_FILE_NAME  "settings.xml"

#define NOTSILENT 0
#define SILENT 1

const char pathPrefix[9][8] =
{ "", "sd:/", "usb:/", "dvd:/", "smb:/", "carda:/", "cardb:/" };

enum {
        DEVICE_AUTO,
        DEVICE_SD,
        DEVICE_USB,
        DEVICE_DVD,
        DEVICE_SMB,
        DEVICE_SD_SLOTA,
        DEVICE_SD_SLOTB
};

enum {
        FILE_RAM,
        FILE_STATE,
        FILE_ROM,
        FILE_CHEAT
};

enum
{
        CTRL_PAD,
        CTRL_ZAPPER,
        CTRL_PAD2,
        CTRL_PAD4,
        CTRL_LENGTH
};

const char ctrlName[6][20] =
{ "NES Controller", "NES Zapper", "NES Controllers (2)", "NES Controllers (4)" };

enum {
        LANG_JAPANESE = 0,
        LANG_ENGLISH,
        LANG_GERMAN,
        LANG_FRENCH,
        LANG_SPANISH,
        LANG_ITALIAN,
        LANG_DUTCH,
        LANG_SIMP_CHINESE,
        LANG_TRAD_CHINESE,
        LANG_KOREAN,
        LANG_PORTUGUESE,
        LANG_BRAZILIAN_PORTUGUESE,
        LANG_CATALAN,
        LANG_LENGTH
};

struct SGCSettings{
        int             AutoLoad;
        int             AutoSave;
        int             LoadMethod; // For ROMS: Auto, SD, DVD, USB, Network (SMB)
        int             SaveMethod; // For SRAM, Freeze, Prefs: Auto, SD, USB, SMB
        char    LoadFolder[MAXPATHLEN]; // Path to game files
        char    SaveFolder[MAXPATHLEN]; // Path to save files
        char    CheatFolder[MAXPATHLEN]; // Path to cheat files

        char    smbip[80];
        char    smbuser[20];
        char    smbpwd[20];
        char    smbshare[20];

        float   zoomHor; // horizontal zoom amount
        float   zoomVert; // vertical zoom amount
        int             render;         // 0 - original, 1 - filtered, 2 - unfiltered
        int             videomode; // 0 - automatic, 1 - NTSC (480i), 2 - Progressive (480p), 3 - PAL (50Hz), 4 - PAL (60Hz)
        int             widescreen;
        int             hideoverscan;
        int             gamegenie;
        int             currpal;
        int             timing;
        int             Controller;
        int             crosshair;
        int             spritelimit;
        int             xshift;         // video output shift
        int             yshift;
        int             WiimoteOrientation;
        int             ExitAction;
        int             MusicVolume;
        int             SFXVolume;
        int             Rumble;
        int     language;
};

void ExitApp();
void ShutdownWii();
bool SaneIOS();
extern struct SGCSettings GCSettings;
extern int ScreenshotRequested;
extern int ConfigRequested;
extern int ShutdownRequested;
extern int ExitRequested;
extern char appPath[];
extern char loadedFile[];
extern int frameskip;
extern int turbomode;
extern bool romLoaded;

#endif